#pragma once

#include <QJsonObject>
#include <QString>
#include <visualization_msgs/msg/interactive_marker.hpp>
#include <rviz_common/visibility_control.hpp>
#include <QColor>
#include <QVector3D>
#include <pcl/point_types.h>


using visualization_msgs::msg::InteractiveMarker;


namespace rviz_custom_plugins
{

namespace utils
{


const std::string MARKER_ADDED= "marker_added";
const std::string MARKER_UPDATED= "marker_updated";
const std::string MARKER_REMOVED= "marker_removed";


RVIZ_COMMON_PUBLIC 
void addMetadata(InteractiveMarker& intMarker, const QString & key, const QString & value);


RVIZ_COMMON_PUBLIC 
void setMetadata(InteractiveMarker& intMarker, const QJsonObject& metaJson);


RVIZ_COMMON_PUBLIC 
QJsonObject getMetadata(InteractiveMarker& intMarker);


RVIZ_COMMON_PUBLIC 
QString getMetadataItem(InteractiveMarker& intMarker, const QString & key, const QString& defaultValue="");



}

}
